// 1.冒泡排序O(n^2)-比较+交换
// 2.选择排序-比较+交换
// 3.插入排序O(n^2)-比较+交换
// 4.快速排序O(nlog n)-最优：空间小，速度快，实现简单
// 5.二分排序O(nlog n)-把问题分成更小的问题
// 6.堆排(nlog n)-把问题分成更小的问题

/**
 * 冒泡排序：从左往右，依次把前面最大的值换到最后面
 * 1.定义一个外循环，从0开始，
 * 2.定义一个内循环，从1开始，如果前面的数大于后面的数，交换位置
 * @param {*} array 
 */
function bubbleSort(array){
    // 外层循环控制排序趟数,最后一位数字不需要比较了，
    for (let i = 0; i < array.length-1; i++) {
        for (let j = 1; j < array.length-i; j++) {
            // 如果前面的数大于后面的数，交换位置
            if(array[j-1]>array[j]){
              const temp=array[j];
              array[j]=array[j-1];
              array[j-1]=temp  
              console.log('swap',array[j],array[j-1])
            }
           
        }
        
        
    }
    return array
}


console.log(bubbleSort([21,3,1,5,1]))



function BinarySort(arr){
        let midIndex=0;
        if(arr.length%2===0){

        }else{
            BinarySort(arr)
        }

}

